package com.social.service;

import com.social.pojo.RegistrationOfCases;
import com.social.pojo.Ultimate;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 科长审核管理
 */
public interface UltimateService {
    /**
     * 查所有方法
     *
     * @return 集合中的Ultimate对象
     */
    List<Ultimate> selectAll();

    /**
     * 根据 Ultimate primary key删除方法
     *
     * @param id Ultimate primary key
     * @return 删除状态
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加方法
     *
     * @param record Ultimate对象
     * @return 添加状态
     */
    int insert(Ultimate record);

    /**
     * 动态sql添加方法
     *
     * @param record Ultimate对象
     * @return 添加状态
     */
    int insertSelective(Ultimate record);

    /**
     * 根据Ultimate primary key查询方法
     *
     * @param id Ultimate primary key
     * @return Ultimate对象
     */
    Ultimate selectByPrimaryKey(Integer id);

    /**
     * 批量删除方法
     *
     * @param id 集合中的Ultimate primary key
     * @return 删除状态
     */
    int bulkDelete(List<Integer> id);

    /**
     * 批量导出
     *
     * @param id 数组中的Ultimate primary key
     * @return 集合中的Ultimate对象
     */
    List<Ultimate> bulkExport(Integer[] id);

    /**
     * 科长审核分页查询
     *
     * @param typeStatus     类型状态
     * @param approvalStatus 审批状态
     * @param page           当前页
     * @param pageNum        每页条数
     * @return 集合中RegistrationOfCases对象
     */
    List<RegistrationOfCases> ultimateSelectPage(Integer typeStatus, Integer approvalStatus, Integer page, Integer pageNum);

    /**
     * 科长审核所有条数以及模糊查询返回条数
     *
     * @param unitName           单位名称
     * @param nameOfRegistrant   登记人姓名
     * @param organizationalCode 组织机构代码
     * @param typeStatus         类型状态
     * @param approvalStatus     审批状态
     * @return 查询数量
     */
    Integer ultimateSelectCount(String unitName, String nameOfRegistrant, String organizationalCode, Integer typeStatus, Integer approvalStatus);

    /**
     * 科长审核模糊查询
     *
     * @param unitName           单位名称
     * @param nameOfRegistrant   登记人姓名
     * @param organizationalCode 组织机构代码
     * @param typeStatus         类型状态
     * @param approvalStatus     审批状态
     * @param page               当前页
     * @param pageNum            每页条数
     * @return 集合中RegistrationOfCases对象
     */
    List<RegistrationOfCases> ultimateSelectLike(String unitName, String nameOfRegistrant, String organizationalCode, Integer typeStatus, Integer approvalStatus, Integer page, Integer pageNum);


    /**
     * 科长审核修改状态
     *
     * @param typeStatus     类型状态
     * @param approvalStatus 审批状态
     * @param id             Ultimate primary key
     * @return 修改状态
     */
    int updateStatus(Integer approvalStatus, Integer typeStatus, Integer id);

    /**
     * 动态sql修改方法
     *
     * @param record Ultimate对象
     * @return 修改状态
     */
    int updateByPrimaryKeySelective(Ultimate record);

    /**
     * 修改方法
     *
     * @param record Ultimate对象
     * @return 修改状态
     */
    int updateByPrimaryKey(Ultimate record);
}
